package com.dasberg.gwt.domain;

import java.io.Serializable;
import java.util.Set;

/**
 * User interface.
 * @author mischa
 */
public interface IUser extends Serializable {

    /**
     * Gets the id.
     * @return id The id.
     */
    public Integer getId();

    /**
     * Gets the username.
     * @return username The username.
     */
    public String getUsername();

    /**
     * Gets the password.
     * @return password The password.
     */
    public String getPassword();

    /**
     * Gets the password hint.
     * @return passwordHint The passwordHint.
     */
    public String getPasswordHint();

    /**
     * Gets the firstname.
     * @return firstName The firstname.
     */
    public String getFirstName();

    /**
     * Gets the lastname.
     * @return lastName The lastname.
     */
    public String getLastName();

    /**
     * Gets the email address.
     * @return email The email adsress.
     */
    public String getEmail();

    /**
     * Gets the phonenumber.
     * @return phoneNumber The phonenumber.
     */
    public String getPhoneNumber();

    /**
     * Gets the set of roles.
     * @return roles The roles.
     */
    public Set<? extends IRole> getRoles();

    /**
     * Indicates if the User is enabled.
     * @return <code>true</code> if the user is enabled, else <code>false</code>.
     */
    public boolean isEnabled();

    /**
     * Indicates if the user account is expired.
     * @return <code>true</code> if the user account is expired, else <code>false</code>.
     */
    public boolean isAccountExpired();

    /**
     * Indicates if the user account is locked.
     * @return <code>true</code> if the user is locked, else <code>false</code>.
     */
    public boolean isAccountLocked();
}
